/**
 * Created by Administrator on 2017/4/12.
 * @description 新增jsbridge 模块，获取native一些通用参数信息
 */
const mShop = weex.requireModule('bridgeModule');

/**
 * 获取app config信息
 *
 * @key
 *    fridgeId  -- 冰箱fridgeId
 *    deviceId  -- mac地址
 *    deviceType  -- hlt byd230
 *    osType  -- 操作系统
 *    resolution -- 分辨率
 *    version     -- 客户端版本
 *    longitude    -- 经度
 *    latitude     -- 维度
 *
 */
function getAppConfig(callback) {
    try {
        mShop.getAppConfig(ret => {
            if(ret.errorCode == 0 && ret.msg){
                let config = ret.msg;
                if(typeof callback === 'function') callback(config);
            } else {
                if(typeof callback === 'function') callback({});
            }
        });
    } catch(e) {
        console.log(e);
        if(typeof callback === 'function') callback({});
    }
}

/**
 * 判断是否为ios环境
 * @returns {boolean}
 */
function isIOS() {
    return weex.config.env ? weex.config.env.platform === 'iOS' : false;
}

/**
 * 返回设备信息
 * @returns {{deviceWidth: *, deviceHeight: *}}
 */
function getDeviceInfo() {
    let env = weex.config.env;
    let deviceWidth = env.deviceWidth;
    let deviceHeight = env.deviceHeight;
    return {
        deviceWidth: deviceWidth,
        deviceHeight: deviceHeight
    }
}

/**
 * @description 获取用户信息
 * @return hash/null
 */
function getUserInfo(callback) {
    try {
        mShop.getUserInfo(ret => {
            if(ret.errorCode == 0 && ret.msg && ret.msg.code){
                let user = ret.msg.code;
                if(typeof callback === 'function') callback(user);
            } else {
                if(typeof callback === 'function') callback(null);
            }
        });
    } catch (e) {
        console.log(e);
        if(typeof callback === 'function') callback(null);
    }
}

/**
 * @description 是否是测试环境
 * @return {int} 0--测试环境、1--正式环境
 */
function getEnv(callback) {
    try {
        mShop.isDebug(res => {
            if(typeof callback === 'function') callback(res);
        });
    } catch (e) {
        console.log('get server data error: ' + e);
        if(typeof callback === 'function') callback(0);
    }
}

/**
 * @description 支付方式选择
 * @param options
 * {
 *      payWay: {String} 支付方式, 必传参数, 如：aliPay--支付宝、wxPay--微信支付、...
 *      url: {String} 支付接口参数, 必传参数
 * }
 * {
 *      errorCode: {Number} 支付结果返回code, 0--成功、1--失败
 *      msg: {String} 支付结果返回信息
 * }
 * 通过广播机制获取支付结果
 * 事件名 fire_event_payresult
 */
function getPayClient(options) {
    options = options || {};
    if(typeof options.payWay === 'undefined' || options.payWay == '') {
        console.log('支付方式参数未传');
        return false;
    }
    try {
        mShop.payClient(options);
    } catch (e) {
        console.log('get pay way client error:' + e);
    }
}

/**
 * @description 分享插件使用
 * @param options
 * options ---- {
 *      title: {String}分享标题, 必传参数
 *      image: {String}分享图片缩略图, 必传参数
 *      url: {String}分享地址, 必传参数
 * }
 * @return {boolean}
 */
function shareSdkAction(options) {
    options = options || {};
    options.title = options.title || '[美的i+商城]';
    options.image += '?width=200&height=200&clarity=100';
    try {
        mShop.shareSdkAction(options);
    } catch (e) {
        console.log('share sdk action error:' + e);
    }
}


/**
 * @description 登录跳转
 * @param callback
 * retOptions -- {
 *      errorCode: "0"--登录操作成功、“1”--登录操作失败
 *      msg:{
 *          code: 用户hash值
 *          ....
 *      }
 * }
 */
function jumpLoginActivity(callback) {
    try {
        mShop.login(ret => {
            let data = JSON.parse(ret);
            if(data.errorCode == 0 && data.msg && data.msg.code){
                let user = data.msg.code;
                if(typeof callback === 'function') callback(user);
            } else {
                if(typeof callback === 'function') callback(null);
            }
        });
    } catch(e){
        if(typeof callback === 'function') callback(null);
    }

}

/**
 * @description 调用设备电话功能
 * @param tel object
 * @param callback function
 * @demo {phone: 13955528499}
 */
function call(tel,callback) {
    let options = {
        phone: tel || null
    };
    try {
        mShop.call(options,ret => {
            if(typeof callback === 'function') callback(ret);
        });
    } catch(e){
        if(typeof callback === 'function') callback(e);
    }
}

/**
 * @description 隐藏软键盘
 * @param callback function
 */
function hideKeyBoard(callback) {
    try {
        mShop.collapseSoftInputMethod();
    } catch(e){
        if(typeof callback === 'function') callback(e);
    }
}

exports.getEnv = getEnv;
exports.getAppConfig=getAppConfig;
exports.getUserInfo=getUserInfo;
exports.isIOS=isIOS;
exports.getDeviceInfo=getDeviceInfo;
exports.getPayClient=getPayClient;
exports.shareSdkAction=shareSdkAction;
exports.jumpLoginActivity=jumpLoginActivity;
exports.call=call;
exports.hideKeyBoard=hideKeyBoard;